This specification defines concepts for result transfer that can be used as is. However, companion specifications or vendors may want to add additional information into the meta data of the result transfer or define explicitly the formats of the transferred results. This annex describes how to best extend the result transfer approach.

The metadata of the result is defined in the ResultMetaDataType, which is used in the ResultDataType and therefore also in the ResultType VariableType, which again is used in the ResultReadyEventType. The ResultDataType is also used in various methods.

If the metadata of the result is to be extended, the ResultMetaDataType has to be extended by creating a subtype. For using the Methods of the ResultManagementType, this is all that needs to be done. Those Methods returning instances of ResultDataType, now using the extended subtype in that structure. It is not allowed to change the signature of the Methods in a subtype of ResultManagementType, therefore, no subtype needs to be created.

In case, the ResultType Variables or the ResultReadyEvents are supported, additional subtypes should be created. It is not necessary to create a subtype of ResultDataType, as it is not possible to change the DataType of ResultMetaData in the DataType. Only instances of ResultDataType will use the subtype. But the ResultType VariableType is exposing the content of the ResultMetaDataType as subvariables. Therefore, a subtype of the VariableType should be created exposing those additional fields of the subtype of the ResultMetaDataType as subvariables. Since those should also be exposed as Event fields, a subtype of the ResultReadyEventType should be created using the subtype of the VariableType. In both cases, also a subtype of the ResultManagementType should be created, using the subtype of the VariableType and pointing to the subtype of the ResultReadyEventType.

In Table 39, this is summarized.

Table 39 – Required Subtypes for extending Result Metadata

Supported Concept

ResultMetaDataType

ResultDataType

ResultType

ResultReadyEventType

ResultManagementType

Result Methods

Yes

No

No

No

No

Result Variables

Yes

No

Yes

No

Yes

Result Events

Yes

No

Yes

Yes

Yes

In Figure 4, an example extending the metadata for all communication mechanisms is given.

image009.png

Figure 4 – Example of extending the metadata

The result is returned in the ResultContent of the ResultDataType, as well as in the ResultContent and ReducedResultContent of the ResultType VariableType, and potentially also in the file transfer using the ResultTransferType.

In order to expose the format and data structure of the ResultContent, it is not possible to subtype the ResultDataType, as the type of a structure field cannot be changed in a subtype. However, a subtype of the ResultType VariableType should be created, where the ResultContent and ReducedResultContent can be overridden and the DataType is changed to the specific DataType. In order to expose this for the Event subscriptions, a subtype of the ResultReadyEventType should be created as well, using the subtype of the VariableType.

That is, without a subtype of the VariableType there is no standardized mechanism to expose the expected DataType for ResultContent and ReducedResultContent. Clients need to receive an instance of ResultDataType in order to get the information about the used DataType in that instance.

If the file transfer is used to expose larger results, Servers may support various file formats, as exposed by the FileFormat field of the ResultMetaDataType. In order to allow access to those different file formats, a Server should subtype the BaseResultTransferOptionsDataType and add a field for selecting the file format (and potentially other fields defining the content of the file). Servers should subtype the ResultTransferType (and therefore also the ResultManagementType) to document which subtype of the ResultTransferOptionsDataType is allowed when calling the Method for the file transfer. The BaseResultTransferOptionsDataType is intentionally defined as an abstract DataType. The subtype ResultTransferOptionsDataType can be used as concrete DataType, if no additional fields are needed. This allows to override the GenerateFileForRead Method and change the DataType of the generateOptions in the signature to a concrete DataType. This would not be allowed, if the BaseResultTransferOptionsDataType would not be abstract.